#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;

bool comp(pair<int, int> x, pair<int, int> y) {
    return x.first < y.first;
}

class Solution {
    public:
    double midSalary(int n, int w, vector<pair<int, int> >& limits) {
        sort(limits.begin(), limits.end(), comp);
        int little_sum = 0;
        for (int i = 0; i < n / 2; i++) {
            little_sum += limits[i].first;
        }
        int min_large = INT_MAX;
        for (int i = n/2; i <= n/2+1; i++) {
            if (limits[i].second < min_large) {
                min_large = limits[i].second;
            }
        }
        // cout << min_large;
        if (min_large * (n/2+1) + little_sum <= w){
            return min_large;
        } else {
            return double(w - little_sum) / double(n/2+1);
        }
    }
};


int main() {
    // std::cout << "Hello, World!" << std::endl;
    auto s = new Solution();
    int n, w;
    vector<pair<int, int> > limits;
    cin >> n >> w;
    for (int i = 0; i < n; i++) {
        pair<int, int> li;
        cin >> li.first >> li.second;
        limits.push_back(li);
    }

    // for (int i = 0; i < limits.size(); i++) {
    //     cout << limits[i].first << " " << limits[i].second << "\n";
    // }

    cout << s->midSalary(n, w, limits) << std::endl;

    return 0;
}